package com.example.deepseek.service;

import com.example.deepseek.model.ChatSession;
import com.example.deepseek.model.Message;

import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * DeepSeek服务接口
 * 提供与DeepSeek AI聊天相关的功能
 */
public interface DeepseekService {
    
    /**
     * 创建新的聊天会话
     * 
     * @param name 会话名称
     * @return 创建的会话对象
     */
    ChatSession createChatSession(String name);
    
    /**
     * 获取所有聊天会话
     * 
     * @return 会话列表
     */
    List<ChatSession> getAllSessions();
    
    /**
     * 根据ID获取特定会话
     * 
     * @param sessionId 会话ID
     * @return 会话对象，如果不存在则返回null
     */
    ChatSession getSession(String sessionId);
    
    /**
     * 更新会话信息
     * 
     * @param session 需要更新的会话对象
     */
    void updateSession(ChatSession session);
    
    /**
     * 清空会话中的所有消息
     * 
     * @param sessionId 会话ID
     */
    void clearSession(String sessionId);
    
    /**
     * 删除会话
     * 
     * @param sessionId 要删除的会话ID
     */
    void deleteSession(String sessionId);
    
    /**
     * 发送消息到DeepSeek API并获取回复
     * 
     * @param sessionId 会话ID
     * @param message 要发送的消息内容
     * @return 异步返回AI的回复消息
     */
    CompletableFuture<Message> sendMessage(String sessionId, String message);

    /**
     * 分析文件内容
     * @param sessionId 会话ID
     * @param fileContent 文件内容
     * @param fileName 文件名
     * @return 异步返回AI的分析结果
     */
    CompletableFuture<Message> analyzeFileContent(String sessionId, String fileContent, String fileName);

    /**
     * 分析多个文件内容
     * @param sessionId 会话ID
     * @param combinedContent 合并的文件内容
     * @param fileCount 文件数量
     * @return 异步返回AI的分析结果
     */
    CompletableFuture<Message> analyzeMultipleFiles(String sessionId, String combinedContent, int fileCount);

    /**
     * 通过WebSocket发送消息
     * @param sessionId 会话ID
     * @param message 要发送的消息
     */
    void sendWebSocketMessage(String sessionId, Message message);
}